// 模块导入导出一定要对应
// 导入导出方式必须对应，当默认导出的时候名字可以随便 按需导出 导入的时候名字必须对应上
import request from '@/utils/request'

// 登录函数
/**
 * @description: 登录函数
 * @param {*} data { mobile,password}
 * @return {*} promise
 */
export function login(data) {
  // 先调 request方法在return出去
  // 1.request这个函数的作用？ 类似于axios发送请求的
  // 2.request这个函数执行后的返回值是什么？ 是promise对象
  // 3.login函数执行完毕返回值又是什么？ 还是promise对象  login() ->promise
  // 4.结论：1.login()完成了两个事 发送请求 与 返回promise
  // 结论2：login().then(res=>{})（完全异步）  或 async function login(){ await login()} （同步伪装成异步）
  return request({
    // 绝对地址
    // 【 基地址+绝对地址=完整的绝对地址请求用 】
    url: '/sys/login',
    method: 'POST',
    data
  })
}

/**
 * @description: 获取用户资料
 * @param {*} token
 * @return {*}
 */
export function getUserInfo() {
  return request({
    url: '/sys/profile',
    method: 'post'
  })
}

/**
 * @description: 获取用户头像
 * @param {*} id 用户id
 * @return {*}
 */
export function getUserDetailById(id) {
  return request({
    url: `/sys/user/${id}`
  })
}
// login在业务中进行接口调用的函数封装
// 为什么要这么做？
// 1.api接口是语义化的函数 看到函数名字 接口的用处
// 2.几口的信息已经封装完毕 业务直接拿来用 只需要传递正常的参数即可
// 3.单独拎出来api模块 固定写位置 增加可维护性
// 以上的写法不是固定的 根据团队的封装写法去适应的使用就行，封装思想一致 但是写法不同，重点只需要读懂函数

/**
 * @description: 保存员工信息
 * @param {*} data
 * @return {*}
 */
export function saveUserDetailById(data) {
  return request({
    url: `/sys/user/${data.id}`,
    method: 'put',
    data
  })
}
